#ifndef SIMPLECHARTWIDGET_H
#define SIMPLECHARTWIDGET_H

#include <QWidget>
#include <QPainter>
#include <QPaintEvent>
#include <QResizeEvent>
#include <QFontMetrics>
#include <QMargins>
#include <QPair>
#include <QList>
#include <QString>

class SimpleChartWidget : public QWidget
{
    Q_OBJECT

public:
    explicit SimpleChartWidget(const QString &title = "", QWidget *parent = nullptr);

    // 设置图表数据
    void setChartData(const QList<QPair<QString, int>> &data);
    // 设置图表标题
    void setChartTitle(const QString &title);
    // 设置图表颜色
    void setChartColor(const QColor &color);
    // 清空图表数据
    void clearData();

protected:
    void paintEvent(QPaintEvent *event) override;
    void resizeEvent(QResizeEvent *event) override;
    QSize sizeHint() const override;
    QSize minimumSizeHint() const override;

private:
    // 绘制坐标轴
    void drawAxes(QPainter &painter, const QRect &plotArea);
    // 绘制数据点和连线
    void drawData(QPainter &painter, const QRect &plotArea);
    // 绘制标题
    void drawTitle(QPainter &painter, const QRect &rect);
    // 绘制图例
    void drawLegend(QPainter &painter, const QRect &rect);
    // 计算绘图区域
    QRect calculatePlotArea(const QRect &widgetRect);
    // 获取数据的最大值和最小值
    QPair<int, int> getDataRange();
    // 格式化日期标签
    QString formatDateLabel(const QString &dateStr);

    QString m_title;
    QList<QPair<QString, int>> m_data;
    QColor m_chartColor;
    QMargins m_margins;

    // 字体和样式设置
    QFont m_titleFont;
    QFont m_labelFont;
    int m_pointRadius;
    int m_axisTickLength;
    int m_gridSpacing;

    // 状态管理
    bool m_isInitialized;
};

#endif // SIMPLECHARTWIDGET_H